Спортсмен Василий участвовал в
соревнованиях по хоккейболу и получил в личном зачёте серебряную медаль.
Известно, что участники, набравшие одинаковое количество очков, награждаются
одинаковыми наградами. Также известно, что были разыграны золотые, серебряные и
бронзовые медали. В задаче не спрашиваются правила хоккейбола. Необходимо
только определить, сколько очков набрал Василий.
Вход. В первой строке задано количество
спортсменов n (2 ≤ n ≤ 1000), участвовавших в
соревнованиях. Во второй строке приведены n целых чисел – результаты соревнования.
Выход. Вывести одно число – результат Василия.
Пример
входа |
Пример
выхода |
5 4 3 3 1 2 |
3 |
циклы
Анализ алгоритма
Золотом награждаются участники,
набравшие максимальное количество очков. Серебром награждаются участники,
набравшие наибольшее количество очков, меньшее максимума. В заданной
последовательности требуется найти максимальное число, отличное от наибольшего.
Пример
В данном примере
·
участники, набравшие 4 очка, получают золотую медаль;
·
участники, набравшие 3 очка, получают серебряную медаль;
Реализация алгоритма
Читаем входное
значение n.
scanf("%d", &n);
Количество очков золотой и серебряной медали находим в
переменных gold
и silver.
gold =
silver = -1;
for (i = 0; i < n; i++)
{
scanf("%d", &val);
Если текущее количество очков val больше gold, то за val очков теперь
дают золотую медаль, а за gold очков дают серебряную.
if (val > gold) silver = gold, gold = val;
Если текущее количество очков val лежит между silver и gold не
включительно, то за val очков дают серебряную медаль.
else if ((val > silver) && (val < gold)) silver = val;
}
Выводим ответ.
printf("%d\n", silver);